package com.atguigu.tingshu.search.config;

import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;

import java.util.concurrent.Executors;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;

/**
 * @author atguigu-mqx
 * @ClassName ThreadPoolExecutorConfig
 * @description: TODO
 * @date 2025年02月25日
 * @version: 1.0
 */
@Component
public class ThreadPoolExecutorConfig {

    @Bean
    public ThreadPoolExecutor threadPoolExecutor(){
        //  获取到核心线程个数
        int corePoolSize = Runtime.getRuntime().availableProcessors();
        // 创建线程池：设置线程池的参数：
        return new ThreadPoolExecutor(
                corePoolSize,//  核心线程个数;  cpu:n+1; io:2n;
                2*corePoolSize,// 最大线程个数：
                60,// 线程存活时间：
                TimeUnit.SECONDS,// 时间单位：
                new LinkedBlockingQueue<>(1000),// 阻塞队列：
                Executors.defaultThreadFactory(),//
                new ThreadPoolExecutor.AbortPolicy()
        );
    }
}
